package com.hydl.power.mapper;

import com.hydl.power.pojo.PowerConsume;
import com.hydl.power.pojo.PowerDataEnergy;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface PowerDataEnergyMapper {

    int insert(PowerDataEnergy record);

    PowerDataEnergy selectByPrimaryKey(Integer id);

    /**
     * 日报
     * @param createTime 查询时间
     * @param areaId    地区ID
     * @param projectId 项目ID
     * @param powerRoomId 配电房ID
     * @return
     */
    List<PowerConsume> dayPower(@Param("createTime") String createTime, @Param("areaId") String areaId, @Param("projectId") String projectId, @Param("powerRoomId") String powerRoomId,@Param("tableName") String tableName);

    /**
     * 月报
     * @param startTime 开始时间
     * @param areaId    地区ID
     * @param projectId 项目ID
     * @param powerRoomId 配电房ID
     * @return
     */
    List<PowerConsume> listByMonth(@Param("startTime") String startTime, @Param("areaId") String areaId, @Param("projectId") String projectId, @Param("powerRoomId") String powerRoomId,@Param("tableName") String tableName,
                                   String endTime);
    List<PowerConsume> listByMonths(String startTime,String areaId,String projectId,String powerRoomId,String endTime);

    /**
     * 年报
     * @param startTime 开始时间
     * @param areaId    地区ID
     * @param projectId 项目ID
     * @param powerRoomId 配电房ID
     * @return
     */
    List<PowerConsume> listByYear(@Param("startTime") String startTime, @Param("areaId") String areaId, @Param("projectId") String projectId, @Param("powerRoomId") String powerRoomId,@Param("tableName") String tableName);


    /**
     * 周报
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @param areaId    地区ID
     * @param projectId 项目ID
     * @param powerRoomId 配电房ID
     */
    List<PowerConsume> listByWeeks(@Param("startTime") String startTime,@Param("endTime") String endTime, @Param("areaId") String areaId, @Param("projectId") String projectId, @Param("powerRoomId") String powerRoomId,@Param("tableName") String tableName);
    List<PowerConsume> listByWeek(@Param("startTime") String startTime,@Param("endTime") String endTime, @Param("areaId") String areaId, @Param("projectId") String projectId, @Param("powerRoomId") String powerRoomId);

    /**
     * 获取设备号
     * @param areaId
     * @param projectId
     * @param powerRoomId
     * @return
     */
    List<String> getDeviceId(@Param("areaId") String areaId, @Param("projectId") String projectId, @Param("powerRoomId") String powerRoomId);


    PowerConsume getPowerConsume(@Param("createTime") String createTime,@Param("deviceId")String deviceId);

    /**
     * 当前日期配电房下所有设备 周一到周六所有的数据
     * @param createTime
     * @param areaId
     * @param projectId
     * @return
     */
    List<PowerDataEnergy> listWeekById(@Param("createTime") Long createTime,@Param("areaId") String areaId,@Param("projectId") String projectId);



    /**
     * 一天最新的一条数据
     * @param createTime
     * @param serialNumber
     * @return
     */
    PowerDataEnergy getNewest(@Param("createTime") String createTime,@Param("serialNumber") String serialNumber);

    /**
     * 一天最后一条数据
     * @param createTime
     * @param serialNumber
     * @return
     */
    PowerDataEnergy getOld(@Param("createTime") String createTime,@Param("serialNumber") String serialNumber);

    /**
     * 按energyId 查询一条数据
     * @param energyId
     * @return
     */
    PowerDataEnergy getByEnergyId(@Param("energyId") String energyId);

    List<PowerDataEnergy> listBySerialNumber(@Param("serialNumber") String serialNumber,@Param("createTime") String createTime);

    /**
     * 电力数据/有功总电能
     * @param begin
     * @param end
     * @param areaId
     * @param projectId
     * @param deviceId
     * @return
     */
    List<PowerDataEnergy> listPtByList(@Param("beginTime") Long begin, @Param("endTime") Long end,@Param("areaId") String areaId,@Param("projectId") String projectId,
                                       @Param("powerRoomId") String powerRoomId,@Param("deviceId") String deviceId);

    /**
     * 电流
     * @param begin
     * @param end
     * @param areaId
     * @param projectId
     * @param powerRoomId
     * @param deviceId
     * @return
     */
    List<PowerDataEnergy> listDlByList(@Param("beginTime") Long begin, @Param("endTime") Long end,@Param("areaId") String areaId,@Param("projectId") String projectId,
                                       @Param("powerRoomId") String powerRoomId,@Param("deviceId") String deviceId);

    /**
     * 相电压
     * @param begin
     * @param end
     * @param areaId
     * @param projectId
     * @param powerRoomId
     * @param deviceId
     * @return
     */
    List<PowerDataEnergy> listXiangDyByList(@Param("beginTime") Long begin, @Param("endTime") Long end,@Param("areaId") String areaId,@Param("projectId") String projectId,
                                            @Param("powerRoomId") String powerRoomId,@Param("deviceId") String deviceId);

    /**
     * 线电压
     * @param begin
     * @param end
     * @param areaId
     * @param projectId
     * @param powerRoomId
     * @param deviceId
     * @return
     */
    List<PowerDataEnergy> listXianDyByList(@Param("beginTime") Long begin, @Param("endTime") Long end,@Param("areaId") String areaId,@Param("projectId") String projectId,
                                           @Param("powerRoomId") String powerRoomId,@Param("deviceId") String deviceId);

    /**
     * 功率因数
     * @param begin
     * @param end
     * @param areaId
     * @param projectId
     * @param powerRoomId
     * @param deviceId
     * @return
     */
    List<PowerDataEnergy> listPfByList(@Param("beginTime") Long begin, @Param("endTime") Long end,@Param("areaId") String areaId,@Param("projectId") String projectId,
                                       @Param("powerRoomId") String powerRoomId,@Param("deviceId") String deviceId);



}
